package com.wanli.virtualthreadguide;

public class VirtualThreadDemo {
    public static void main(String[] args) {
        // 使用 try-with-resources 来自动关闭 ExecutorService
        try (var executor = java.util.concurrent.Executors.newVirtualThreadPerTaskExecutor()) {
            for (int i = 0; i < 5; i++) {
                int taskId = i;
                // 提交任务到虚拟线程池
                executor.submit(() -> {
                    System.out.println("Executing task " + taskId + " in virtual thread: "
                            + Thread.currentThread().getName());
                    try {
                        // 模拟任务处理时间
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        Thread.currentThread().interrupt();
                        System.err.println("Task " + taskId + " was interrupted");
                    }
                    System.out.println("Finished task " + taskId);
                });
            }
        }

        // 注意：由于虚拟线程默认是守护线程，因此需要确保主线程等待子线程完成
        // 在这个例子中，我们依赖于 try-with-resources 结构来管理生命周期，
        // 但是如果你有其他需求，你可能需要添加额外的同步机制。
        System.out.println("Main method finished.");
    }
}